#!/usr/bin/python

#
# TODO: Parametrizar o tamanho do processamento, 7 ou 5 digitos, de acordo com o cliente
#

# Flag para teste unitario
flag_unit_test=0
flag_unit_test=1

# teste unitario
if flag_unit_test==1:
	import time , os , sys
	sys.path.append("lib/log")
	sys.path.append("lib/db")
	sys.path.append("lib/io/in")
	sys.path.append("lib/comum")


import os
import glob

from log 		import Log
from dados 		import Dados
from const 		import Const
from entrada 		import Entrada
from processamento 	import Processamento
from threadproc		import ThreadProcessamento

class Principal:
	def __init__(self):
		self.log 	= Log()
		self.dados 	= Dados()
		self.entrada 	= Entrada(self.dados, self.log)
		self.CONST	= Const()

	def run(self):
		self.log.update('Iniciando Principal...\n')
		# Obtem paths de entrada
		e=self.dados.getEntradas()
		# Verifica conteudo destes paths
		for entrada in e:
			projeto=entrada[0]
			ret=self.dados.lockEntrada(projeto)
			if(ret==1):
				ret=self.entrada.verifica(entrada)
				if(ret==True):
					id_processamento=self.dados.lockProcessamento(projeto)
					entrada = entrada + (id_processamento,)
					self.log.update('Entrada Encontrada! Criando Processamento[' + str(id_processamento) + ']...\n')
					self.dados.setIO(id_processamento, self.CONST.ENTRADA, self.CONST.ESPERANDO)
					thread = ThreadProcessamento(entrada)
					thread.start()
				else:
					self.dados.unlockEntrada(projeto)

		self.log.update('Finalizando Principal...\n')

#local teste
if flag_unit_test==1:
	inner=Principal()
	inner.run()
